#include <stdio.h>
#include <stdlib.h>
 
void printfWelcome() {
    printf("hello world!\n");
}
 
 
int add(int a,int b) { 
    return a + b;
}
 
int main() {
    //1.定义函数指针
    void (*p2)();//1.如何表示指针：*  2.如何知道是函数:()  3.函数指针是专用的，
               //格式要求很强(参数类型，个数，返回值都要一样)
               
    //2.给函数指针赋值
    p2 = printfWelcome;//函数名就是地址，就像数组一样，数组名就是地址
    
    //3.如何通过函数指针调用函数
           //法一
    p2();//直接通过指针名字 + ()
           //法二
    (*p2)();//取内容  (*指针名字())
    
    
    int (*padd)(int a,int b);
    padd = add;

    //int ret = padd(1,2);//法一
    
    int ret = (*padd)(1,2);//法二
    
    printf("ret = %d\n",ret);
	return 0;
}